/**
 * 清理output目录脚本
 * 
 * 该脚本用于清空output目录中的文件，但保留目录结构
 * 支持所有平台，并提供详细的输出信息
 */

const fs = require('fs');
const path = require('path');

// 输出目录路径
const outputDir = path.join(__dirname, '..', 'output');

/**
 * 清理目录中的所有文件
 * @param {string} directory 目录路径
 * @param {boolean} removeDir 是否移除目录本身
 * @returns {number} 删除的文件数量
 */
function cleanDirectory(directory, removeDir = false) {
    if (!fs.existsSync(directory)) {
        console.log(`目录不存在: ${directory}`);
        console.log('创建目录...');
        
        try {
            fs.mkdirSync(directory, { recursive: true });
            console.log(`✓ 已创建目录: ${directory}`);
            return 0;
        } catch (error) {
            console.error(`✗ 创建目录失败: ${error.message}`);
            return 0;
        }
    }

    console.log(`清理目录: ${directory}`);
    let count = 0;

    try {
        // 获取目录中的所有文件和子目录
        const items = fs.readdirSync(directory);
        
        for (const item of items) {
            const itemPath = path.join(directory, item);
            const stat = fs.lstatSync(itemPath);
            
            if (stat.isDirectory()) {
                // 递归清理子目录
                count += cleanDirectory(itemPath, true);
            } else {
                // 删除文件
                try {
                    fs.unlinkSync(itemPath);
                    console.log(`✓ 已删除文件: ${item}`);
                    count++;
                } catch (error) {
                    console.error(`✗ 删除文件失败 ${item}: ${error.message}`);
                }
            }
        }
        
        // 如果需要，删除目录本身
        if (removeDir && directory !== outputDir) {
            try {
                fs.rmdirSync(directory);
                console.log(`✓ 已删除目录: ${directory}`);
            } catch (error) {
                console.error(`✗ 删除目录失败 ${directory}: ${error.message}`);
            }
        }
        
        return count;
    } catch (error) {
        console.error(`✗ 读取目录失败 ${directory}: ${error.message}`);
        return count;
    }
}

// 执行清理
try {
    const deletedCount = cleanDirectory(outputDir);
    
    if (deletedCount > 0) {
        console.log(`\n✅ 清理完成，共删除了 ${deletedCount} 个文件`);
    } else {
        console.log('\n✅ 目录已经是空的，无需清理');
    }
} catch (error) {
    console.error(`\n❌ 清理过程中发生错误: ${error.message}`);
    process.exit(1);
} 